package cn.iocoder.yudao.module.ym.controller.admin.site.vo;

import cn.iocoder.yudao.module.system.framework.operatelog.core.*;
import com.mzt.logapi.starter.annotation.DiffLogField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalTime;
import java.util.*;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 电站新增/修改 Request VO")
@Data
public class SiteSaveReqVO {

    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16417")
    private Long id;

    @Schema(description = "备注", example = "你说的对")
    private String remark;

    @Schema(description = "公司ID", example = "14721")
    private Long deptId;

    @Schema(description = "区域", requiredMode = Schema.RequiredMode.REQUIRED, example = "15889")
    @NotNull(message = "区域不能为空")
    private Long areaId;

    @Schema(description = "电站名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotEmpty(message = "电站名称不能为空")
    @DiffLogField(name = "电站名称")
    private String siteName;

    @Schema(description = "电站编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private String siteCode;

    @Schema(description = "电站地址")
    @DiffLogField(name = "电站地址")
    private String location;

    @Schema(description = "中心经纬度")
    @DiffLogField(name = "中心经纬度")
    private String latitudeLongitude;

    @Schema(description = "坐标集合", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "坐标集合不能为空")
    @DiffLogField(name = "坐标集合")
    private String coordinates;

    @Schema(description = "经度")
    @DiffLogField(name = "经度")
    private String lon;

    @Schema(description = "纬度")
    @DiffLogField(name = "纬度")
    private String lat;

    @Schema(description = "运营平台")
    @DiffLogField(name = "运营平台")
    private Integer operationPlatform;

    @Schema(description = "设备品牌")
    @DiffLogField(name = "设备品牌",function = DeviceBrandFunction.NAME)
    private Integer deviceBrand;

    @Schema(description = "设备类型", example = "2")
    @DiffLogField(name = "设备类型",function = DeviceTypeFunction.NAME)
    private Integer deviceType;

    @Schema(description = "快充终端数")
    @DiffLogField(name = "快充终端数")
    private Integer fastNum;

    @Schema(description = "慢充终端数")
    @DiffLogField(name = "慢充终端数")
    private Integer slowNum;

    @Schema(description = "管理员名字", example = "芋艿")
    @DiffLogField(name = "管理员名字")
    private String adminName;

    @Schema(description = "管理员电话")
    @DiffLogField(name = "管理员电话")
    private String adminPhone;

    @Schema(description = "月巡检次数")
    @DiffLogField(name = "月巡检次数")
    private Integer inspectionCount;

    @Schema(description = "电站状态", example = "1")
    @DiffLogField(name = "电站状态",function = SiteStatusFunction.NAME)
    private Integer siteStatus;

    @Schema(description = "配套")
    @DiffLogField(name = "配套",function = SupportingFacilitiesFunction.NAME)
    private String supportingFacilities;

    @Schema(description = "运营类型", example = "1")
    @DiffLogField(name = "运营类型",function = OperationTypeFunction.NAME)
    private Integer operationType;

    @Schema(description = "电费")
    @DiffLogField(name = "电费")
    private String electricityBill;

    @Schema(description = "服务费")
    @DiffLogField(name = "服务费")
    private String serviceFee;

    @Schema(description = "运营时间")
    @DiffLogField(name = "运营时间")
    private LocalDateTime onlineDate;

    @Schema(description = "账面投资额")
    @DiffLogField(name = "账面投资额")
    private String investmentAmt;

    @Schema(description = "总功率")
    @DiffLogField(name = "总功率")
    private String totalPower;

    @Schema(description = "分成/租金")
    @DiffLogField(name = "分成/租金")
    private String shareRent;

    @Schema(description = "到期时间")
    @DiffLogField(name = "到期时间")
    private LocalDateTime expirationDate;

    @Schema(description = "客户名称", example = "王五")
    @DiffLogField(name = "客户名称")
    private String clientName;

    @Schema(description = "负责人", example = "张三")
    @DiffLogField(name = "负责人")
    private String leaderName;

    @Schema(description = "负责人电话")
    @DiffLogField(name = "负责人电话")
    private String leaderPhone;

    @Schema(description = "绑定人")
    private List<Long> boundUserIds;

    @Schema(description = "场地年限")
    private String siteTenure;

    @Schema(description = "商圈类别")
    @DiffLogField(name = "商圈类别",function = BusinessCategoryFunction.NAME)
    private Integer businessCategory;

    @Schema(description = "电站亏损原因")
    private Integer stationLoss;

    @Schema(description = "电站icon")
    @DiffLogField(name = "电站icon")
    private String siteIcon;

    @Schema(description = "电站图片")
    @DiffLogField(name = "电站图片")
    private String siteImages;

    @Schema(description = "营业开始时间")
    private LocalTime operatingStart;

    @Schema(description = "营业结束时间")
    private LocalTime operatingEnd;

    @Schema(description = "安装时间")
    private LocalDateTime installationTime;

    @Schema(description = "电站类型", example = "2")
    @DiffLogField(name = "电站类型",function = SiteTypeFunction.NAME)
    private Integer siteType;

    @Schema(description = "所属公司")
    private String company;

    @Schema(description = "是否改扩建")
    private Integer expansion;

    @Schema(description = "改扩建详情")
    private String expansionDetail;

    @Schema(description = "改扩建进度")
    private String expansionProgress;

    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "状态不能为空")
    @DiffLogField(name = "状态")
    private Integer status;

    @Schema(description = "保密图片")
    @DiffLogField(name = "保密图片")
    private String secretImage;

    @Schema(description = "商机时间")
    @DiffLogField(name = "商机时间")
    private LocalDateTime businessTime;





}
